


#ifndef _MASS_SPRING_MODEL_H

#define _MASS_SPRING_MODEL_H

#include <vector>
#include <iostream>
#include "Vector.h"
#include "Spring.h"
#include "NodoFisico.h"
#include "ModeloFisico.h"

using namespace::std;

class Mass_Spring_Model : Modelo_Fisico
{
public:
	//Constructor
	Mass_Spring_Model();

	//Propiedades
	void setNodos(vector<NodoFisico> nodos){objNodos = nodos;}
	vector<NodoFisico>& getNodos(){return objNodos;}

	void setOneNodo(NodoFisico nodo){objNodos.push_back(nodo);}
	NodoFisico& getOneNodo(int Nro){return objNodos[Nro];}
	
	void setNroNodos(int NroNodos){intNroNodos = NroNodos;}
	unsigned int getNroNodos(){return intNroNodos;}

	void setNroSprings(int NroSprings){intNroSprings = NroSprings;}
	unsigned int getNroSprings(){return intNroSprings;}

	void setOneSpring(Spring spring){objSprings.push_back(spring);}
	Spring& getOneSpring(int Nro){return objSprings[Nro];}

	int getOneNodoModificado(int Nro){return vNodosModificados[Nro];}

	int getNroNodosModificados(){return intNroNodosModificados;}

	//Metodos
	void InicializarModelo();
	void Calculate();

private:
	//Atributos
	vector<NodoFisico> objNodos;
	vector<Spring> objSprings;
	unsigned int intNroNodos;
	unsigned int intNroSprings;

	vector<int> vNodosModificados;
	unsigned int intNroNodosModificados;

	void CrearNodos();
	void CrearSprings();
};

#endif

